<?php
/**
 * @author		João Batista Neto
 * @brief		Objetos que representam cada tipo do retorno da API
 * @package		dso.buscape.result.type
 */

require_once 'dso/buscape/result/type/BuscapeLeaf.php';

/**
 * @brief		Endereço de um vendedor
 * @class		BuscapeAddress
 * @ingroup		Types
 */
class BuscapeAddress extends BuscapeLeaf {
	/**
	 * @brief	Nome da empresa do endereço
	 * @var		string
	 */
	private $name;

	/**
	 * @brief	Área postal
	 * @var		string
	 */
	private $postalArea;

	/**
	 * @brief	Complemento
	 * @var		string
	 */
	private $complement;

	/**
	 * @brief	Bairro ou distrito
	 * @var		string
	 */
	private $district;

	/**
	 * @brief	Cidade
	 * @var		string
	 */
	private $city;

	/**
	 * @brief	Estado ou unidade federativa
	 * @var		string
	 */
	private $state;

	/**
	 * @brief	Código postal ou CEP
	 * @var		string
	 */
	private $postalCode;

	/**
	 * @brief	Telefone
	 * @var		string
	 */
	private $phone;

	/**
	 * @brief	Latitude para localização geográfica
	 * @var		float
	 */
	private $latitude;

	/**
	 * @brief	Longitude para localização geográfica
	 * @var		float
	 */
	private $longitude;

	/**
	 * @brief	Cria uma instância do objeto com os argumentos passados
	 * @param	$args array Lista de argumentos que serão utilizados para criação do objeto
	 * @return	BuscapeAddress
	 */
	public static function createInstance( array $args ){
		$address = new BuscapeAddress();

		foreach ( $args as $property => $value ){
			$address->$property = $value;
		}

		return $address;
	}

	/**
	 * @brief	Recupera o nome da vendedor ou empresa do endereço
	 * @return	string
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * @brief	Recupera a área postal
	 * @return	string
	 */
	public function getPostalArea() {
		return $this->postalArea;
	}

	/**
	 * @brief	Recupera um complemento do endereço
	 * @return	string
	 */
	public function getComplement() {
		return $this->complement;
	}

	/**
	 * @brief	Recupera o distrito ou bairro do endereço
	 * @return	string
	 */
	public function getDistrict() {
		return $this->district;
	}

	/**
	 * @brief	Recupera a cidade
	 * @return	string
	 */
	public function getCity() {
		return $this->city;
	}

	/**
	 * @brief	Recupera o estado ou unidade federativa
	 * @return	string
	 */
	public function getState() {
		return $this->state;
	}

	/**
	 * @brief	Recupera o código postal ou CEP
	 * @return	string
	 */
	public function getPostalCode() {
		return $this->postalCode;
	}

	/**
	 * @brief	Recupera o telefone do endereço
	 * @return	string
	 */
	public function getPhone() {
		return $this->phone;
	}

	/**
	 * @brief	Recupera a latitude do endereço para localização geográfica
	 * @return	float
	 */
	public function getLatitude() {
		return $this->latitude;
	}

	/**
	 * @brief	Recupera a longitude do endereço para localização geográfica
	 * @return	float
	 */
	public function getLongitude() {
		return $this->longitude;
	}
}